3. SSO登录实现方式

  • 问题提出:假定服务器有多个独立系统,能否多个独立系统共享一套验证信息

  • 问题解决:利用单点登录(SSO)

  • 正常多服务器SSO登录时序图 sso

  • sso退出登录时序图

    sso_logout

SSO的难点在于,用户登录一台服务器后,如何让别的服务器也同时得到用户的状态,包括登陆状态和授权等。
一般我们常用以下方式来让多台服务器共享用户的状态:

  • 共享session:
    • 一旦用户在某一台服务器登录,得到的session就可以和其他服务器共享
    • 实现简单
    • 应用体系简单,子系统很少的情况下,可以考虑采用
    • 存在问题
      • 严重扩展性问题,Session中所涉及的类型必须是子系统中共同拥有的
      • 跨等级域名情况无法处理
  • SSO:
    • 是一类解决方案的统称,而在具体的实施方面,我们有两种策略可供选择:
      • SAML 2.0
      • OAuth 2.0